Mobile computing devices contain a main system memory, typically a volatile RAM, such as a DRAM, and non-volatile flash memory, primarily used for storing media (e.g., images, videos, audio files) and other data. The size of the flash memory is typically significantly larger than the size of the volatile RAM (RAM). For example, some modern smartphones have 256 MB or 512 MB of DRAM and 8 GB, 16 GB, 32 GB or more of flash memory. Lower-end mobile devices contain less RAM than their higher-end counterparts, and thus, applications that can execute on higher-end devices may not be able to execute on the lower-end devices due to RAM constraints.